package com.example.nonacademic_education.config;

import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import com.example.nonacademic_education.constant.Constant;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.ArrayList;
import java.util.List;

/**
 * @author moon
 * @description 路由拦截配置类
 * @date 2022/6/14
 */
@Configuration // TODO: 2023/6/14 token持久化到数据库中 
public class SaTokenConfigure implements WebMvcConfigurer {
    // 注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        List<String> excludePathPatterns=new ArrayList<>();
        excludePathPatterns.add("/user/login");
        // 注册 Sa-Token 拦截器，校验规则为 StpUtil.checkLogin() 登录校验。
        registry.addInterceptor(new SaInterceptor(handle -> {
                    // 角色认证 -- 拦截以 user 开头的路由，必须具备 admin 角色或者 normal 角色才可以通过认证
                    //SaRouter.match("/user/**", r -> StpUtil.checkRoleOr(Constant.STUDENT));
                }))
                .addPathPatterns("/**")
                .excludePathPatterns(excludePathPatterns);
    }

}

